0 REM 1991 ANDREW MAYOR FOR C64 LIGHT 5 IF FRE(1)<>FRE(0) THEN PRINT "[147]C64 MODE ONLY":END 10 A=A+1:ONAGOTO15 ,30,40 15 POKE 53280,06:POKE 53281,15:PRINT"[155][147]" 20 POKE 53281,6 25 LOAD"M/C SCAN1",8,1 30 LOAD"M/C SCAN2",8,1 40 WAIT 56320,16,16 45 POKE 1018,122:POKE1019,242:POKE 756,3 50 LOC=1472:POKE 1014,64:POKE1015,8 55 POKE 254,INT(LOC/256):POKE 253,LOC-(PEEK(254)*256) 60 PRINT"[147]":POKE53280,0:POKE 53281,0 65 DIM VL(5):DIM MX(5):DIM B$(7):DIM BYT(7):DIM CL(3):DIM IRQ(4,1) 70 SET=2 75 FOR X=0 TO 4:READVL(X):READMX(X):NEXT 80 FORX=0 TO 7:READ B$(X):NEXTX 85 FORX=0TO4:READ IRQ(X,0):READ IRQ(X,1):NEXT 90 FOR X=0 TO 7:BYTE(X)=2^X:NEXT:REM BYTES FOR SPEED 95 GOSUB865:GOTO 1195 100 PRINT "[147][154] [159]-- SPRITE MEMORY SCANNER --" 105 PRINT"[155]"; 110 PRINT"BACK = "TAB(13)"[146][217][144] [146][212][155]"TAB(19)"MULTI MODE =" 115 PRINT"MCOL1 = "TAB(13)"[146][217][144] [146][212][155]"TAB(19)"BUMP"SPC(8)"=" 120 PRINT"MCOL2 = "TAB(13)"[146][217][144] [146][212][155]" 125 REM *SHOW VALUES* 130 PRINT"[154] ":SYS 953:REM SPR INFO SHOW 135 FOR S1=0 TO 4:GOSUB140:NEXT:RETURN 140 POKE 55470+(S1*20),VL(S1) 145 PRINT"" 150 POKE 214,4+INT(S1/2):POKE 211,8+(S1AND1)*25 155 SYS 58732:REM PRINT# 160 POKE 199,REV:REV=0 165 IF S1=1 THEN PRINT B$(0);B$(VL(1)+3):RETURN 170 PRINT B$(0);VL(S1) 175 RETURN 180 S1=0:MAX=4 185 REV=1:GOSUB140 190 NM=S1:GOSUB720: 195 IF S1<>NM THEN REV=0:GOSUB140:S1=NM 200 IF FIRE=1 THEN230 205 IF G = 30 THEN VL(S1)=VL(S1)+1 210 IF G=29 THEN VL(S1)=VL(S1)-1 215 IF VL(S1) < 0 THEN VL(S1)=MX(S1) 220 IF VL(S1) > MX(S1) THEN VL(S1)=0 225 GOTO185 230 POKE V+28,255*VL(1):POKE V+37,VL(2):POKEV+38,VL(4) 235 POKE 251,(PEEK(251)AND192)+VL(3) 240 GOSUB125:GOSUB330 245 GOTO250 250 WAIT 56320,16,0 255 PRINT B$(7)"[151] "; 260 IF SET=0 THEN PRINT"[152]"; 265 PRINT" SETTINGS [151]"; 270 IF SET=1 THEN PRINT"[152]"; 275 PRINT" SCAN [151]"; 280 IF SET=2 THEN PRINT"[152]"; 285 PRINT" DISK [151]"; 290 IF SET=3 THEN PRINT"[152]"; 295 PRINT" MOVE [151]"; 300 IF SET=4 THEN PRINT"[152]"; 305 PRINT" ZOOM [151] "; 310 MAX=4 315 NM=SET:GOSUB720:SET=NM 320 IF FIRE=1 THEN ON SET+1 GOTO180,915,365,785,540 325 GOTO255 330 REM *BACKGRND* 335 PRINTB$(7)""; 340 POKE 646,VL(0):POKE1017,VL(0) 345 FOR G=1 TO 15 350 PRINT" "; 355 NEXT G 360 RETURN 365 REM *DISK* 370 WAIT 56320,16,0 375 NM=0:MAX=2:PRINT"[154]" 380 PRINTB$(7)" "; 385 IF NM=0 THEN PRINT"[159]"; 390 PRINT" LOAD "; 395 IF NM=1 THEN PRINT"[159]"; 400 PRINT" SAVE "; 405 IF NM=2 THEN PRINT"[159]"; 410 PRINT" CANCEL  "; 415 GOSUB720 420 LS=NM 425 IF FIRE=1 THEN ON NM+1 GOTO435,500,250 430 GOTO380 435 REM *LOAD* 440 WAIT 56320,16,0 445 MAX=1:NM=0:FIRE=0 450 PRINT"":GOSUB1065:PRINT"[154] NEW LOAD ADDRESS ? :[159] ";B$(NM+5) 455 IF FIRE=1 THEN ON NM+1 GOTO465,475 460 GOSUB720:GOTO450 465 PRINT"":GOSUB1065 470 PRINT"[153] LOAD: ";:GOSUB965 475 GOSUB1080 480 POKE 195,L1:POKE 196,H1 485 POKE 186,8:POKE 185,NM 490 SYS 934 495 GOTO 1195 500 REM *SAVE* 505 PRINT"":GOSUB1065 510 PRINT"[153] SAVE: ";:GOSUB990 515 GOSUB1080 520 POKE193,L1:POKE 194,H1:POKE 174,(L2+1)AND255:POKE175,(H2+(1-SGN(L2)))AND255 525 POKE186,8:POKE185,0 530 SYS 934 535 GOTO 1195 540 REM *ZOOM* 545 WAIT 56320,16,0 550 MAX=7:X=4:FIRE=0:GOTO 565 555 NM=JJ:GOSUB720:JJ=NM 560 POKE 56255+X,0:POKE 1983+X,160 565 X=INT((JJ+1)*40/9) 570 POKE1983+X,30 :POKE 56255+X,3 575 IF FIRE<>1 THEN555 580 GOSUB 1155:REM IRQOFF 585 IF JJ<>7THEN FOR X= 1 TO (7-JJ):SYS920:NEXTX 590 POKEV+21,0:CL(0)=VL(0):CL(1)=VL(2):CL(3)=VL(4):MD=VL(1)+1 595 CL(2)=PEEK(53287+JJ) 600 POKE 53296,1:REM C128 2MHZ 605 PRINT"[144][147]";:SYS820 610 PRINT"[146]"SPC(6)"SPRITE ZOOM" 615 POKE 646,CL(0) 620 FOR G=1 TO 21:PRINT B$(MD ):NEXT 625 FOR L=0 TO 2:FOR G=0 TO 20 630 X=PEEK(LOC +(64*7)+L+G*3) 635 IF X=0 THEN GOTO660 640 T=L*8+G*40 645 FOR M=0 TO 7 STEP MD 650 ON MD GOSUB690,705 655 NEXTM 660 NEXTG:NEXTL 665 POKE 53296,0:REM 2MHZ OFF 670 WAIT 56320,16,16 675 IF JJ<>7 THEN FORX=1TO(7-JJ):SYS906:NEXTX 680 GOTO 1195 685 REM *HI-RES* 690 IF SGN(XANDBYT(M))=1 THEN POKE (55336+7-M+T),CL(2) 695 RETURN 700 REM *MULTI * 705 N=(XAND(BYT(M)+BYT(M+1)))/BYT(M) 710 POKE(55335+7-M+T),CL(N):POKE(55336+7-M+T),CL(N) 715 RETURN 720 REM *JOYSTICK* 725 G=PEEK(56320)AND31:IF G=31 THEN GETA$:IF A$="" THEN 725 730 IF G=31 GOTO765 735 IF G=23 THEN NM=NM+1 740 IF G=27 THEN NM=NM-1 745 IF NM<0 THEN NM=0 750 IF NM>MAX THEN NM=MAX 755 FIRE=0:IF G=15 THEN FIRE=1 760 RETURN 765 IF A$<"1" OR A$>"8" THEN GOTO 780 770 G=V+39+VAL(A$)-1 775 POKE G,PEEK(G)+1AND15 780 GOTO 725 785 REM *MOVE* 790 PRINT"[129]":GOSUB1065 795 PRINT"[158] MOVE: [129]";:GOSUB990 800 LN=(L2+(H2*256)+1-(L1+(H1*256)))/64 805 IF LN>255 THEN PRINT" [150] TOO BIG !!!":WAIT56320,16,16:GOTO785 810 L2=L1:H2=H1 815 GOSUB965 820 GOSUB 1155:REM IRQOFF 825 POKE 253,L1:POKE254,H1 830 POKE 251,L2:POKE252,H2 835 POKE 1015,LN 840 SYS 820:REM COPY SPRITE 845 POKE 251,L1:POKE252,H1 850 POKE 1015,8:POKE 254,INT(LOC/256):POKE 253,LOC-(PEEK(254)*256) 855 GOSUB 1145:GOTO250 860 REM *SPR SET* 865 G=0:DIST=37 870 V=53248:POKE V+21,255:POKE V+16,192 875 FOR X=V+39 TO V+46:G=G+1:POKEX,G+6:NEXT:G=0 880 FOR X=V TO V+15 STEP 2:G=G+DIST 885 POKE X,(GAND255):POKE X+1,180 890 NEXT 895 POKE V+29,0:POKE V+23,0:POKEV+28,0 900 POKE 251,00:POKE 252,32:REM $2000 905 FOR X=0 TO 7:POKE 2040+X,LOC/64+X:NEXT X 910 RETURN 915 REM *SCAN* 920 GOSUB925:GOTO250 925 WAIT 56320,16,0 930 POKE 1986,158 935 SYS 953 :REM MEM LOC 940 G=PEEK(56320)AND31:IF G=31THEN POKE 56258,PEEK(56258)+1AND255:GOTO940 945 IF G = 15 THEN POKE 56258,0:POKE1986,160:RETURN 950 IF G = 23 THEN SYS 906 :REM MC ADD 955 IF G = 27 THEN SYS 920 :REM MC SUB 960 GOTO935 965 REM *GET 1 LOC* 970 PRINT" TO "; 975 GOSUB925:GOSUB1045 980 L1=PEEK(251):H1=PEEK(252) 985 RETURN 990 REM *GET 2 LOC* 995 PRINT" FROM "; 1000 GOSUB925:GOSUB1045 1005 L1=PEEK(251):H1=PEEK(252) 1010 PRINT" - "; 1015 GOSUB925:GOSUB1045 1020 PRINT">"; 1025 L2=PEEK(251):H2=PEEK(252) 1030 IF ((H1*256)+L1)>((H2*256)+L2) THEN L2=L1:H2=H1:L1=PEEK(251):H1=PEEK(252) 1035 H2=H2+SGN((L2+63)AND256):L2=(L2+63)AND 255 1040 RETURN 1045 REM *PRINT LOC* 1050 FOR X=1024 TO 1027:TEMP=PEEK(X) 1055 TEMP=TEMP-128:IF TEMP<48 THEN TEMP=TEMP+64 1060 PRINTCHR$(TEMP);:NEXTX:RETURN 1065 REM *PRINT BAR* 1070 PRINT B$(7)" " 1075 PRINT"[145][145]";:RETURN 1080 REM *FILENAME* 1085 POKE V+21,0 1090 GOSUB 1155:REM IRQOFF 1095 PRINT"[146][144][147][155]"TAB(11)"................" 1100 INPUT"FILE NAME";NM$ 1105 NM$=LEFT$(NM$,16) 1110 FORX=1TOLEN(NM$) 1115 POKE 1983+X,ASC (MID$(NM$,X,1)) 1120 NEXTX 1125 POKE 183,LEN(NM$) 1130 POKE 187,192:POKE 188,7 1135 POKE 951,48 +(LS*2) 1140 RETURN 1145 REM *IRQON* 1150 MODE=0:GOTO 1165 1155 REM *IRQOFF* 1160 MODE=1 1165 FOR X=0 TO 4 1170 POKE 681+(X*5),IRQ(X,MODE) 1175 NEXT 1180 SYS 679 1185 POKE 53281,0 1190 RETURN 1195 REM *RESET* 1200 PRINT"[147]":GOSUB100:GOSUB330 1205 POKEV+21,255 1210 GOSUB 1145:REM IRQON 1215 GOTO 250 1220 DATA 15,15,0,1,0,15,0,63,1,15 1225 DATA " [157][157][157]","[208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208][208]","[207][208][207][208][207][208][207][208][207][208][207][208][207][208][207][208][207][208][207][208][207][208][207][208]" 1230 DATA OFF,ON ,YES,NO ,"" 1235 DATA 205,49,2,234,249,01,01,240,01,121